/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Dao;
import Beans.ProveedorBean;
import Conexion.Conexion;
import java.sql.ResultSet;
import java.util.Vector;
/**
 *
 * @author acorzo
 */
public class ProveedorDAO {

    // Atributos de la Clase
    public static String INSERT_DATOS_PROVEEDOR="INSERT INTO cat_proveedores (nombreProveedor,contacto,rfc,direccion,noInt,noExt,idEntidad,codigoPostal,diasCredito,limiteCredito,email,fechaVencimiento,observaciones,fechaAlta,idEstado) VALUES ";
    public static String GET_DATOS_PROVEEDORES="SELECT nombreProveedor,rfc,diasCredito,limiteCredito,saldo,idProveedor FROM cat_proveedores WHERE idEstado=1;";
    public static String GET_DATOS_PROVEEDOR="SELECT nombreProveedor,contacto,rfc,direccion,noInt,noExt,idEntidad,codigoPostal,diasCredito,limiteCredito,saldo,email,fechaVencimiento,observaciones,idProveedor FROM cat_proveedores WHERE idProveedor=";
    public static String GET_ID_PROVEEDOR="SELECT auto_increment FROM information_schema.tables WHERE table_schema='bd_pegaso' AND table_name='cat_proveedores';";
    public static String UPDATE_DATOS_PROVEEDOR="UPDATE cat_proveedores SET";
    public static String DELETE_DATOS_PROVEEDOR="UPDATE cat_proveedores SET idEstado=2 WHERE ";
    public static String GET_DATOS_PROVEEDORES_ACTIVOS="SELECT nombreProveedor,rfc,diasCredito,limiteCredito,saldo,idProveedor FROM cat_proveedores WHERE ";
    public static String GET_DATOS_PROVEEDOR_COMBO="SELECT nombreProveedor,idProveedor FROM cat_proveedores WHERE idEstado=1";
    public static String GET_ID_PROVEEDOR_NOMBRE="SELECT idProveedor FROM cat_proveedores ";

    // Metodos Publicos
    // Insertamos los Datos del Proveedor
    public Vector insertDatosProveedor(ProveedorBean proveedorBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Insertamos los Datos del Proveedor
        try {
            conect.getPreparedStatement().execute(INSERT_DATOS_PROVEEDOR+
                    "('"+proveedorBean.getNombreProveedor()+"'"+
                    ",'"+proveedorBean.getContacto()+"'"+
                    ",'"+proveedorBean.getRfc()+"'"+
                    ",'"+proveedorBean.getDireccion()+"'"+
                    ",'"+proveedorBean.getNoInt()+"'"+
                    ",'"+proveedorBean.getNoExt()+"'"+
                    ","+proveedorBean.getIdEntidad()+
                    ",'"+proveedorBean.getCodigoPostal()+"'"+
                    ","+proveedorBean.getDiasCredito()+
                    ","+proveedorBean.getLimiteCredito()+
                    ",'"+proveedorBean.getEmail()+"'"+
                    ",'"+proveedorBean.getFechaVencimiento()+"'"+
                    ",'"+proveedorBean.getObservaciones()+"'"+
                    ",NOW()"+
                    ",1);");
            resultDatos.add("OK");
        } catch (Exception e) {
            resultDatos.add("ERROR");
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Actualizamos los Datos del Proveedor
    public Vector updateDatosProveedor(ProveedorBean proveedorBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Actualizamos los Datos del Proveedor
        try {
            conect.getPreparedStatement().execute(UPDATE_DATOS_PROVEEDOR+
                    " nombreProveedor='"+proveedorBean.getNombreProveedor()+"'"+
                    ",contacto='"+proveedorBean.getContacto()+"'"+
                    ",rfc='"+proveedorBean.getRfc()+"'"+
                    ",direccion='"+proveedorBean.getDireccion()+"'"+
                    ",noInt='"+proveedorBean.getNoInt()+"'"+
                    ",noExt='"+proveedorBean.getNoExt()+"'"+
                    ",idEntidad="+proveedorBean.getIdEntidad()+
                    ",codigoPostal='"+proveedorBean.getCodigoPostal()+"'"+
                    ",diasCredito="+proveedorBean.getDiasCredito()+
                    ",limiteCredito="+proveedorBean.getLimiteCredito()+
                    ",saldo="+proveedorBean.getSaldo()+
                    ",email='"+proveedorBean.getEmail()+"'"+
                    ",fechaVencimiento='"+proveedorBean.getFechaVencimiento()+"'"+
                    ",observaciones='"+proveedorBean.getObservaciones()+"'"+
                    ",fechaModificacion=NOW() WHERE idProveedor="+proveedorBean.getIdProveedor());
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos Datos de Proveedores
    public Vector getDatosProveedores(ProveedorBean proveedorBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos los Datos de Proveedores
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_PROVEEDORES);
            while(resultSet.next()){
                ProveedorBean getDatosProveedores=new ProveedorBean();
                getDatosProveedores.setNombreProveedor(resultSet.getString("nombreProveedor"));
                getDatosProveedores.setRfc(resultSet.getString("rfc"));
                getDatosProveedores.setDiasCredito(resultSet.getString("diasCredito"));
                getDatosProveedores.setLimiteCredito(resultSet.getString("limiteCredito"));
                getDatosProveedores.setSaldo(resultSet.getString("saldo"));
                getDatosProveedores.setIdProveedor(resultSet.getString("idProveedor"));
                resultDatos.add(getDatosProveedores);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos Datos Proveedor
    public Vector getDatosProveedor(ProveedorBean proveedorBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos Datos Proveedor
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_PROVEEDOR+proveedorBean.getIdProveedor()+";");
            while(resultSet.next()){
                ProveedorBean getDatosProveedor=new ProveedorBean();
                getDatosProveedor.setNombreProveedor(resultSet.getString("nombreProveedor"));
                getDatosProveedor.setContacto(resultSet.getString("contacto"));
                getDatosProveedor.setRfc(resultSet.getString("rfc"));
                getDatosProveedor.setDireccion(resultSet.getString("direccion"));
                getDatosProveedor.setNoInt(resultSet.getString("noInt"));
                getDatosProveedor.setNoExt(resultSet.getString("noExt"));
                getDatosProveedor.setIdEntidad(resultSet.getString("idEntidad"));
                getDatosProveedor.setCodigoPostal(resultSet.getString("codigoPostal"));
                getDatosProveedor.setDiasCredito(resultSet.getString("diasCredito"));
                getDatosProveedor.setLimiteCredito(resultSet.getString("limiteCredito"));
                getDatosProveedor.setSaldo(resultSet.getString("saldo"));
                getDatosProveedor.setEmail(resultSet.getString("email"));
                getDatosProveedor.setFechaVencimiento(resultSet.getString("fechaVencimiento"));
                getDatosProveedor.setObservaciones(resultSet.getString("observaciones"));
                getDatosProveedor.setIdProveedor(resultSet.getString("idProveedor"));
                resultDatos.add(getDatosProveedor);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos el Proximo Identificador del Proveedor
    public Vector getIdProveedor(ProveedorBean proveedorBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos el Identificador del Proveedor
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_ID_PROVEEDOR);
            while (resultSet.next()){
                ProveedorBean getIdProveedor=new ProveedorBean();
                getIdProveedor.setIdProveedor(resultSet.getString("auto_increment"));
                resultDatos.add(getIdProveedor);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Eliminamos los Datos del Proveedor (Logica)
    public Vector deleteDatosProveedor(ProveedorBean proveedorBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Eliminamos los Datos del Proveedor
        try {
            conect.getPreparedStatement().execute(DELETE_DATOS_PROVEEDOR+
                    "idProveedor="+proveedorBean.getIdProveedor());
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }
    
    // Busqueda de Proveedores Registrados con Estatus Activo (1)
    public Vector buscarDatosProveedorActivo(ProveedorBean proveedorBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();
        
        // Buscamos los Proveedores Registrados
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_PROVEEDORES_ACTIVOS+
                    "nombreProveedor LIKE '%"+proveedorBean.getNombreProveedor()+"%' AND rfc LIKE '%"+proveedorBean.getRfc()+"%'");
            while(resultSet.next()){
                ProveedorBean getDatosProveedoresActivos=new ProveedorBean();
                getDatosProveedoresActivos.setNombreProveedor(resultSet.getString("nombreProveedor"));
                getDatosProveedoresActivos.setRfc(resultSet.getString("rfc"));
                getDatosProveedoresActivos.setDiasCredito(resultSet.getString("diasCredito"));
                getDatosProveedoresActivos.setLimiteCredito(resultSet.getString("limiteCredito"));
                getDatosProveedoresActivos.setSaldo(resultSet.getString("saldo"));
                getDatosProveedoresActivos.setIdProveedor(resultSet.getString("idProveedor"));
                resultDatos.add(getDatosProveedoresActivos);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Busqueda de Proveedores Registrados con Estatus Activo (1)
    public Vector buscarDatosProveedorCombo(ProveedorBean proveedorBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Buscamos los Proveedores Registrados
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_PROVEEDOR_COMBO);
            while(resultSet.next()){
                ProveedorBean getDatosProveedorCombo=new ProveedorBean();
                getDatosProveedorCombo.setNombreProveedor(resultSet.getString("nombreProveedor"));
                getDatosProveedorCombo.setIdProveedor(resultSet.getString("idProveedor"));
                resultDatos.add(getDatosProveedorCombo);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos el ID del Proveedor por Nombre
    public Vector getIdProveedorByNombre(ProveedorBean proveedorBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos el ID del Proveedor por Nombre
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_ID_PROVEEDOR_NOMBRE+
                    " WHERE nombreProveedor = '" + proveedorBean.getNombreProveedor() + "'");
            while(resultSet.next()){
                ProveedorBean getDatosProveedor=new ProveedorBean();
                getDatosProveedor.setIdProveedor(resultSet.getString("idProveedor"));
                resultDatos.add(getDatosProveedor);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+e);
        }
        // Retornamos el Valor
        return resultDatos;
    }
}
